package _03_This;
/**
 * 定义 :
 * 		this 关键字
 * 		this 就是每个对象中,保存自身内存地址的一个引用类型的成员变量
 * 		this 就是表示这个对象自己
 * 		this 不能出现在静态上下文中,只能出现在成员方法中
 * 		用哪个对象调用的成员方法,那么成员方法中的这个 this 就表示哪个对象
 * 用法 :
 * 	1.this用在成员方法中,方便区分同名的成员变量和局部变量
 * 	2.用在构造方法中第一种,同上,可以用来区分同名的局部变量和成员变量
 * 	3.用在构造方法中第二种,用于重载调用当前类中的其他构造方法,提高代码重用性
 * 	4.return this;可以返回当前对象的内存地址,做到链式调用
 * @author lenovo
 * @Date 2020年7月7日
 * @Time 上午10:51:04
 */
public class This_01 {
	static int a = 1;
	int b = 2;

	public static void main(String[] args) {
		int a = 2;
		System.out.println(a);
		// System.out.println(this);

		This_01 t = new This_01();
		System.out.println(t);
		// _03_This.This_01@15db9742

		int i = t.m3();
		This_01 s = t.m1();
		t.m2();
		t.m1();
		t.m2();
		t.m3();
		// ..
		t.m1().m2().m3();
//		System.out.println(s);
//		1
//		2
//		_03_This.This_01@15db9742
//		1
//		2
//		_03_This.This_01@15db9742
//		_03_This.This_01@15db9742
	}

	// 修饰符 类名(){}
	public This_01 m2() {
		int b = 1;
		// System.out.println(b);
		// System.out.println(this.b);
		return this;
	}

	public This_01 m1() {
		int b = 1;
		System.out.println(b);
		// 1
		System.out.println(this.b);
		// 2
		System.out.println(this);
		// _03_This.This_01@15db9742
		return this;
	}

	public int m3() {
		return 1;
	}

	This_01() {
		int b = 1;
		// System.out.println(b);
		// System.out.println(this.b);
	}
}
